ARIAã©ã€ããªãŒãžã§ã³ã®å æ¬çã¬ã€ããäžçäžã®ãŠãŒã¶ãŒåãã«ãåçã³ã³ãã³ããæŽæ°ããã¢ã¯ã»ã·ãã«ãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãäœæããããã®ç®çãäœ¿çšæ³ããã¹ããã©ã¯ãã£ã¹ãããããèœãšã穎ã解説ããŸãã
ARIAã©ã€ããªãŒãžã§ã³ïŒåçã³ã³ãã³ãã®ã¢ã¯ã»ã·ããªãã£ã確ä¿ãã
仿¥ã®åçãªãŠã§ãç°å¢ã§ã¯ãã³ã³ãã³ãã¯çµ¶ããå€åããŠããŸãããœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã ã®ãªã¢ã«ã¿ã€ã æŽæ°ãããããžãã¹ã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ã¿ã©ã¯ãã£ããªããã·ã¥ããŒããŸã§ããŠãŒã¶ãŒã¯æ å ±ãã·ãŒã ã¬ã¹ã«æäŸãããããšãæåŸ ããŠããŸããããããéãããæã€ãŠãŒã¶ãŒãç¹ã«ã¹ã¯ãªãŒã³ãªãŒããŒã®ãããªæ¯æŽæè¡ã«äŸåããŠãããŠãŒã¶ãŒã«ãšã£ãŠããããã®åçãªæŽæ°ã¯å€§ããªã¢ã¯ã»ã·ããªãã£ã®éå£ãšãªãåŸãŸããARIAïŒAccessible Rich Internet ApplicationsïŒã©ã€ããªãŒãžã§ã³ã¯ãéçºè ããããã®å€æŽãæ¯æŽæè¡ã«äŒããããšãå¯èœã«ãããã¹ãŠã®äººã«ãšã£ãŠããå æ¬çã§äœ¿ããããäœéšãä¿èšŒããããšã§ã解決çãæäŸããŸãã
ARIAã©ã€ããªãŒãžã§ã³ãšã¯ïŒ
ARIAã©ã€ããªãŒãžã§ã³ã¯ããŠã§ãããŒãžå ã®ç¹å®ã®ã»ã¯ã·ã§ã³ã§ããããã®ã³ã³ãã³ãã倿Žããããšãã«æ¯æŽæè¡ã«éç¥ãæäŸããããã«æå®ãããŠããŸãããããããåžžã«æŽæ°ãç£èŠãããŠãŒã¶ãŒãæåã§ããŒãžãæŽæ°ããããç©æ¥µçã«å€æŽãæ¢ãããããããšãªãããªã¢ã«ã¿ã€ã ã§ãŠãŒã¶ãŒã«æ å ±ãæäŸããæå®ãããã¢ããŠã³ãµãŒã ãšèããŠãã ãããããã¯ãã¹ã¯ãªãŒã³ãªãŒããŒãéåžžãã³ã³ãã³ããæåã«èªã¿èŸŒãŸãããšããããŠãŒã¶ãŒãçŽæ¥ããã«ç§»åãããšãã«ããã³ã³ãã³ããèªã¿äžããªããããéåžžã«éèŠã§ããã©ã€ããªãŒãžã§ã³ããªããã°ããŠãŒã¶ãŒã¯éèŠãªæŽæ°ãèŠéããèããæãªãããäœéšãããããšã«ãªããŸãã
æ¬è³ªçã«ããããã¯çŸä»£ã®ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã®çµ¶ãéãªãå€åãšãåŸæ¥ã®ã¹ã¯ãªãŒã³ãªãŒããŒã®å¯Ÿè©±ã®éçãªã¢ãã«ãšã®éã®ã®ã£ãããåãããã®ã§ãããããã¯ãèŠèŠéãããèªç¥éããããã®ä»ã®æ¯æŽæè¡ãå©çšããäžçäžã®äººã ã«ãšã£ãŠããŠã§ããµã€ããããã¢ã¯ã»ã·ãã«ã§äœ¿ããããããããã®åºæ¬çãªããŒã«ã§ãã
äž»èŠãªå±æ§ïŒaria-liveãaria-atomicãaria-relevant
ARIAã©ã€ããªãŒãžã§ã³ã¯ãæ¯æŽæè¡ãã³ã³ãã³ãã®å€æŽãã©ã®ããã«åŠçããããå¶åŸ¡ããç¹å®ã®ARIA屿§ã䜿çšããŠå®è£ ãããŸããæãéèŠãª3ã€ã®å±æ§ã¯æ¬¡ã®ãšããã§ãã
- aria-live: ãã®å±æ§ã¯ãªãŒãžã§ã³ã®ãã©ã€ãæ§ããå®çŸ©ããéç¥ã®åªå 床ã瀺ããŸãã3ã€ã®å€ããããŸãã
- off: (ããã©ã«ã) ãã®ãªãŒãžã§ã³ã¯ã©ã€ããªãŒãžã§ã³ã§ã¯ãªãã倿Žã¯èªã¿äžããããŸããã
- polite: æ¯æŽæè¡ã¯ããŠãŒã¶ãŒãã¢ã€ãã«ç¶æ ã®ãšãã«ã®ã¿å€æŽãèªã¿äžããã¹ãã§ããããã¯ããã£ããã®éç¥ããœãŒã·ã£ã«ã¡ãã£ã¢ãã£ãŒãã®ã¹ããŒã¿ã¹æŽæ°ãªã©ãå³æã®æ³šæãå¿ èŠãšããªãéèŠåºŠã®äœãæŽæ°ã«é©ããŠããŸãã
- assertive: æ¯æŽæè¡ã¯ããŠãŒã¶ãŒã®æäœãäžæããŠå³åº§ã«å€æŽãèªã¿äžããã¹ãã§ããããã¯äžæãæãå¯èœæ§ããããããæ éãã€æ§ããã«äœ¿çšããŠãã ãããéåžžããšã©ãŒã¡ãã»ãŒãžãç·æ¥ã®èŠåãªã©ãå³æã®æ³šæãå¿ èŠãªéå€§ãªæŽæ°ã®ããã«äºçŽãããŠããŸãã
- aria-atomic: ãã®å±æ§ã¯ã倿Žãçºçãããšãã«ãªãŒãžã§ã³å šäœãèªã¿äžããã¹ããã倿Žãããç¹å®ã®ã³ã³ãã³ãã®ã¿ãèªã¿äžããã¹ãããæ±ºå®ããŸãã2ã€ã®å€ããããŸãã
- false: (ããã©ã«ã) 倿Žãããã³ã³ãã³ãã®ã¿ãèªã¿äžããããŸãã
- true: 倿Žãã©ãã»ã©å°ãããŠãããªãŒãžã§ã³å šäœãèªã¿äžããããŸããããã¯ã倿Žãåãå·»ãæèãéèŠãªå Žåã«åœ¹ç«ã¡ãŸãã
- aria-relevant: ãã®å±æ§ã¯ãã©ã®çš®é¡ã®å€æŽãèªã¿äžããããªã¬ãŒããããæå®ããŸããããã€ãã®å€ãçµã¿åãããããšãã§ããŸãã
- additions: ãªãŒãžã§ã³ã«èŠçŽ ã远å ããããšãã«èªã¿äžããããªã¬ãŒãããŸãã
- removals: ãªãŒãžã§ã³ããèŠçŽ ãåé€ããããšãã«èªã¿äžããããªã¬ãŒãããŸãã
- text: ãªãŒãžã§ã³å ã®èŠçŽ ã®ããã¹ãã³ã³ãã³ãã倿Žããããšãã«èªã¿äžããããªã¬ãŒãããŸãã
- all: ããããçš®é¡ã®å€æŽïŒè¿œå ãåé€ãããã¹ã倿ŽïŒã«å¯ŸããŠèªã¿äžããããªã¬ãŒãããŸãã
- appendages: ã³ã³ãã³ãããªãŒãžã§ã³ã«è¿œèšãããå Žåã«ã®ã¿èªã¿äžããããªã¬ãŒãããŸãã
ARIAã©ã€ããªãŒãžã§ã³ã®å®è·µçãªäœ¿çšäŸ
ARIAã©ã€ããªãŒãžã§ã³ã®åã瀺ãããã«ãããã€ãã®äžè¬çãªäœ¿çšäŸãèŠãŠã¿ãŸãããã
1. ãã£ããã¢ããªã±ãŒã·ã§ã³
ãã£ããã¢ããªã±ãŒã·ã§ã³ã¯ãªã¢ã«ã¿ã€ã æŽæ°ã«å€§ããäŸåããŠããŸããARIAã©ã€ããªãŒãžã§ã³ã䜿çšããããšã§ãã¹ã¯ãªãŒã³ãªãŒããŒã®ãŠãŒã¶ãŒãæ°ããã¡ãã»ãŒãžã®å°çæã«éç¥ãããããã«ãªããŸãã
<div id="chat-log" aria-live="polite" aria-atomic="false" aria-relevant="additions text">
<div class="message">User1: Hello!</div>
</div>
ãã®äŸã§ã¯ãaria-live="polite"
屿§ã«ããããŠãŒã¶ãŒãäžæããããšãªãæ°ããã¡ãã»ãŒãžãèªã¿äžããããŸããaria-atomic="false"
屿§ã«ããããã£ãããã°å
šäœã§ã¯ãªããæ°ããã¡ãã»ãŒãžã®ã¿ãèªã¿äžããããŸããaria-relevant="additions text"
屿§ã«ãããæ°ããã¡ãã»ãŒãžïŒè¿œå ïŒãšæ¢åã¡ãã»ãŒãžã®å€æŽïŒããã¹ãïŒã®äž¡æ¹ãèªã¿äžããããŸãã
2. æ ªäŸ¡ãã£ãã«ãŒã®æŽæ°
éèç³»ã®ãŠã§ããµã€ãã§ã¯ããªã¢ã«ã¿ã€ã ã®æ ªäŸ¡ãã£ãã«ãŒãé »ç¹ã«è¡šç€ºãããŸããARIAã©ã€ããªãŒãžã§ã³ã䜿çšããããšã§ãã¹ã¯ãªãŒã³ãªãŒããŒã®ãŠãŒã¶ãŒã¯åžå Žã®å€åã«ã€ããŠåžžã«æ å ±ãåŸãããšãã§ããŸãã
<div id="stock-ticker" aria-live="polite" aria-atomic="true" aria-relevant="text">
<span id="stock-price">AAPL: $170.00</span>
</div>
ããã§ã¯ãaria-live="polite"
屿§ã«ãããæ ªäŸ¡ã®æŽæ°ãé床ã«éªéã«ãªããªãããã«èªã¿äžããããŸããaria-atomic="true"
屿§ã«ãããäŸ¡æ Œã®ã¿ã倿Žãããå Žåã§ããæ ªäŸ¡ãã£ãã«ãŒã®æ
å ±å
šäœïŒäŸïŒéæã³ãŒããšäŸ¡æ ŒïŒãèªã¿äžããããŸããaria-relevant="text"
屿§ã«ããã<span>
èŠçŽ ã®ããã¹ãã³ã³ãã³ãã倿Žããããšãã«èªã¿äžããããªã¬ãŒãããŸãã
3. ãã©ãŒã ããªããŒã·ã§ã³ãšã©ãŒ
ã¢ã¯ã»ã·ãã«ãªãã©ãŒã ããªããŒã·ã§ã³ãæäŸããããšã¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«ãšã£ãŠéåžžã«éèŠã§ããARIAã©ã€ããªãŒãžã§ã³ã䜿çšããŠããŠãŒã¶ãŒããã©ãŒã ãã£ãŒã«ããæäœããéã«ãšã©ãŒã¡ãã»ãŒãžãåçã«èªã¿äžããããšãã§ããŸãã
<form>
<label for="email">Email:</label>
<input type="email" id="email" name="email">
<div id="email-error" aria-live="assertive" aria-atomic="true"></div>
<button type="submit">Submit</button>
</form>
<script>
const emailInput = document.getElementById('email');
const emailError = document.getElementById('email-error');
const form = document.querySelector('form');
form.addEventListener('submit', (event) => {
if (!emailInput.value.includes('@')) {
event.preventDefault();
emailError.textContent = 'Please enter a valid email address.';
} else {
emailError.textContent = '';
}
});
</script>
ãã®å Žåãaria-live="assertive"
屿§ã«ããããŠãŒã¶ãŒã®å³æã®æ³šæãå¿
èŠãªããããšã©ãŒã¡ãã»ãŒãžãããã«èªã¿äžããããŸããaria-atomic="true"
屿§ã«ããããšã©ãŒã¡ãã»ãŒãžå
šäœãèªã¿äžããããŸãããŠãŒã¶ãŒãç¡å¹ãªã¡ãŒã«ã¢ãã¬ã¹ã§ãã©ãŒã ãéä¿¡ãããšããšã©ãŒã¡ãã»ãŒãžãåçã«<div>
èŠçŽ ã«è¿œå ãããæ¯æŽæè¡ã«ããèªã¿äžããããªã¬ãŒãããŸãã
4. é²æç¶æ³ã®æŽæ°
é·æéãèŠããã¿ã¹ã¯ïŒäŸïŒãã¡ã€ã«ã®ã¢ããããŒããããŒã¿åŠçïŒãå®è¡ããéã«ã¯ããŠãŒã¶ãŒã«é²æç¶æ³ã®æŽæ°ãæäŸããããšãéèŠã§ããARIAã©ã€ããªãŒãžã§ã³ã䜿çšããŠããããã®æŽæ°ãèªã¿äžããããšãã§ããŸãã
<div id="progress-bar" aria-live="polite" aria-atomic="true">
<div id="progress-status">0% Complete</div>
</div>
<script>
const progressStatus = document.getElementById('progress-status');
let progress = 0;
setInterval(() => {
progress += 10;
if (progress <= 100) {
progressStatus.textContent = progress + '% Complete';
}
}, 500);
</script>
ããã§ã¯ãaria-live="polite"
屿§ã«ãããé²æç¶æ³ã®æŽæ°ãé床ã«éªéã«ãªããªãããã«å®æçã«èªã¿äžããããŸããaria-atomic="true"
屿§ã«ããã鲿ã¹ããŒã¿ã¹å
šäœãèªã¿äžããããŸããJavaScriptã³ãŒãã¯ããã°ã¬ã¹ããŒãã·ãã¥ã¬ãŒããã<div>
èŠçŽ ã®ããã¹ãã³ã³ãã³ããæŽæ°ããããšã§ãæ¯æŽæè¡ã«ããèªã¿äžããããªã¬ãŒããŸãã
5. ã«ã¬ã³ããŒéç¥ïŒåœéã¿ã€ã ãŸãŒã³ïŒ
ãŠãŒã¶ãŒãéžæããããŸãã¯èªåæ€åºãããã¿ã€ã ãŸãŒã³ã«åºã¥ããŠäºå®æå»ãæŽæ°ããã«ã¬ã³ããŒã¢ããªã±ãŒã·ã§ã³ã¯ãARIAã©ã€ããªãŒãžã§ã³ã䜿çšããŠä»åŸã®ã€ãã³ãã«ã€ããŠãŠãŒã¶ãŒã«éç¥ã§ããŸããäŸïŒ
<div id="calendar-updates" aria-live="polite" aria-atomic="true">
<p id="next-event">Your next meeting in London is at 2:00 PM BST.</p>
</div>
<script>
// (Simplified example - actual timezone handling would be more complex)
function updateEventTime(timezone) {
let eventTime = "2:00 PM";
let timezoneAbbreviation = "BST"; //Default
if (timezone === "EST") {
eventTime = "9:00 AM";
timezoneAbbreviation = "EST";
}
document.getElementById("next-event").textContent = `Your next meeting is at ${eventTime} ${timezoneAbbreviation}.`;
}
//Simulate timezone change
setTimeout(() => { updateEventTime("EST"); }, 5000);
</script>
ãã®ã¹ã¯ãªããã¯ãé
å»¶åŸã«ã¿ã€ã ãŸãŒã³ã®å€æŽïŒãã³ãã³ããESTãžïŒãã·ãã¥ã¬ãŒãããŸããaria-live="polite"
ã¯ããŠãŒã¶ãŒã®æäœãå³åº§ã«äžæããããšãªããæŽæ°ãããæå»ãèªã¿äžããããããã«ããŸããããã¯ãç°ãªãã¿ã€ã ãŸãŒã³ããŸããã§å
±åäœæ¥ãè¡ããäŒè°ã®ã¹ã±ãžã¥ãŒã«ãæ£ç¢ºã«ææ¡ããå¿
èŠããããŠãŒã¶ãŒã«ãšã£ãŠç¹ã«éèŠã§ãã
ARIAã©ã€ããªãŒãžã§ã³ã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
ARIAã©ã€ããªãŒãžã§ã³ã¯åŒ·åã§ãããæ éãã€ååã«èæ ®ããŠäœ¿çšããå¿ èŠããããŸãã以äžã«ãåŸãã¹ããã¹ããã©ã¯ãã£ã¹ãããã€ã瀺ããŸãã
- ããã©ã«ããšããŠ
aria-live="polite"
ã䜿çšãã: 絶察ã«å¿ èŠãªå Žåãé€ããaria-live="assertive"
ã®äœ¿çšã¯é¿ããŠãã ãããassertiveãªã©ã€ããªãŒãžã§ã³ã®äœ¿ãããã¯ããŠãŒã¶ãŒã«ãšã£ãŠéåžžã«éªéã§äžå¿«ãªãã®ã«ãªãå¯èœæ§ããããŸãã - æç¢ºãã€ç°¡æœãªèªã¿äžããæäŸãã: èªã¿äžãã¯çãèŠç¹ãæŒããããã®ã«ããŠãã ãããäžèŠãªå°éçšèªãæè¡çšèªã¯é¿ããéèŠãªæ å ±ãæç¢ºã«äŒããããšã«éäžããŠãã ããã
- ãŠãŒã¶ãŒã®æèãèæ ®ãã: èªã¿äžããè¡ããããšãã«ãŠãŒã¶ãŒãäœãããŠããå¯èœæ§ãé«ãããèããŠãã ããããã®æèã«ãããŠãèªã¿äžããé¢é£æ§ãããã圹ç«ã€ãã®ã§ããããšã確èªããŠãã ããã
- æ¯æŽæè¡ã§ãã¹ããã: ARIAã©ã€ããªãŒãžã§ã³ã®å®è£ ãæåŸ ã©ããã«æ©èœããããšã確èªããããã«ãå¿ ãå®éã®ã¹ã¯ãªãŒã³ãªãŒããŒã§ãã¹ãããŠãã ãããã¹ã¯ãªãŒã³ãªãŒããŒã«ãã£ãŠARIA屿§ã®è§£éãç°ãªãå ŽåããããããããŸããŸãªæ¯æŽæè¡ã§ãã¹ãããããšãéèŠã§ããäžççã«äœ¿çšãããŠããäžè¬çãªã¹ã¯ãªãŒã³ãªãŒããŒã«ã¯ãNVDAãJAWSãVoiceOverããããŸãã
- åé·ãªèªã¿äžããé¿ãã: ãŠãŒã¶ãŒãæ¢ã«ç¥ã£ãŠããæ å ±ããããŒãžäžã®ä»ã®å Žæã§ç°¡åã«èŠã€ããããæ å ±ãèªã¿äžããªãã§ãã ããã
- å¯èœãªéãã»ãã³ãã£ãã¯HTMLã䜿çšãã: ARIAã«é Œãåã«ãã»ãã³ãã£ãã¯HTMLèŠçŽ ã䜿çšããŠç®çã®å¹æãéæã§ãããã©ãããæ€èšããŠãã ãããäŸãã°ãã¢ãŒãã«ãã€ã¢ãã°ã«ã¯ãã¢ã¯ã»ã·ããªãã£æ©èœãèªåçã«æäŸãã
<dialog>
èŠçŽ ã䜿çšããŸãã - åœéåã«é æ ®ãã: èªã¿äžããç°ãªãèšèªãå°åã«åãããŠé©åã«ããŒã«ã©ã€ãºãããŠããããšã確èªããŠãã ãããé©åãªæåçæ £ç¿ã䜿çšãããã¹ãŠã®ãŠãŒã¶ãŒã«çè§£ãããªãå¯èœæ§ã®ããã¹ã©ã³ã°ãã€ãã£ãªã ã®äœ¿çšã¯é¿ããŠãã ããã
aria-atomic="true"
ã䜿ããããªã: ç¹å®ã®ç¶æ³ã§ã¯åœ¹ç«ã¡ãŸãããäžå¿ èŠã«ãªãŒãžã§ã³å šäœãèªã¿äžããããšã¯ãåé·ã§æ··ä¹±ãæãå¯èœæ§ããããŸãã倿Žãåãå·»ãæèãéèŠãªå Žåã«ã®ã¿äœ¿çšããŠãã ããã- ãã©ãŒã«ã¹ç®¡çãå®è£ ãã: ã©ã€ããªãŒãžã§ã³ã®æŽæ°åŸã«ãã©ãŒã«ã¹ãã©ãã«çœ®ãã¹ãããæ€èšããŠãã ãããå Žåã«ãã£ãŠã¯ããã©ãŒã«ã¹ãã©ã€ããªãŒãžã§ã³èªäœãé¢é£èŠçŽ ã«ç§»åãããããšãé©åãªããšããããŸãã
é¿ããã¹ãäžè¬çãªèœãšã穎
ãã®å©ç¹ã«ãããããããARIAã©ã€ããªãŒãžã§ã³ã¯èª€çšãããããäžé©åã«å®è£ ããããããŠãã¢ã¯ã»ã·ããªãã£ã®åé¡ã«ã€ãªããããšããããŸãã以äžã«ãé¿ããã¹ãäžè¬çãªèœãšã穎ãããã€ã瀺ããŸãã
aria-live="assertive"
ã®äœ¿ããã: åè¿°ã®ããã«ãassertiveãªã©ã€ããªãŒãžã§ã³ã®äœ¿ãããã¯å€§ããªåé¡ã§ããããã¯éåžžã«éªéã«ãªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«æªåœ±é¿ãäžããå¯èœæ§ããããŸãã- ç¡éã®èªã¿äžãã«ãŒããäœæãã: èªã¿äžããå¥ã®èªã¿äžããããªã¬ãŒããç¡éã«ãŒãã«ã€ãªããç¶æ³ãäœããªãããã«æ³šæããŠãã ãããããã¯ããã«æ¯æŽæè¡ãŠãŒã¶ãŒãå§åãã䜿çšäžèœã«ããŠããŸãå¯èœæ§ããããŸãã
- åé·ãããããŸãã¯è€éãããèªã¿äžããè¡ã: èªã¿äžãã¯çãèŠç¹ãæŒããããã®ã«ããŠãã ãããäžåºŠã«å€ãã®æ å ±ã§ãŠãŒã¶ãŒãå§åããããšã¯é¿ããŠãã ããã
- æ¯æŽæè¡ã§ã®ãã¹ããæ ã: ARIAã©ã€ããªãŒãžã§ã³ã®å®è£ ãæ£ããæ©èœããŠããããšã確èªããããã«ã¯ãå®éã®ã¹ã¯ãªãŒã³ãªãŒããŒã§ã®ãã¹ããäžå¯æ¬ ã§ãã
- ã»ãã³ãã£ãã¯HTMLã®ä»£æ¿ãšããŠARIAã䜿çšãã: ARIAã¯ã»ãã³ãã£ãã¯HTMLã眮ãæããããã§ã¯ãªããã¢ã¯ã»ã·ããªãã£ã匷åããããã«äœ¿çšãããã¹ãã§ããé©åãªå Žæã§ã¯åžžã«ã»ãã³ãã£ãã¯HTMLèŠçŽ ã䜿çšããŠãã ããã
- ãã©ãŒã«ã¹ç®¡çãç¡èŠãã: ãã©ãŒã«ã¹ãé©åã«ç®¡çããªããšãã©ã€ããªãŒãžã§ã³ã®æŽæ°åŸã«ãŠãŒã¶ãŒãããŒãžãããã²ãŒããããæäœãããããããšãå°é£ã«ãªãå¯èœæ§ããããŸãã
- ã¢ã¯ã»ã·ããªãã£ãJavaScriptã®ã¿ã«äŸåãã: JavaScriptãç¡å¹ã«ãªã£ãŠããå Žåã§ããŠã§ããµã€ããã¢ã¯ã»ã·ãã«ã§ããããšã確èªããŠãã ãããããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ãã䜿çšããŠãJavaScriptãªãã§åºæ¬çãªã¬ãã«ã®ã¢ã¯ã»ã·ããªãã£ãæäŸããŠãã ããã
- åœéåãæ ã: èªã¿äžããé©åã«ããŒã«ã©ã€ãºããªããšãç°ãªãèšèªèæ¯ãæã€ãŠãŒã¶ãŒãçè§£ããããšãå°é£ãŸãã¯äžå¯èœã«ãªãå¯èœæ§ããããŸãã
ARIAã©ã€ããªãŒãžã§ã³ããã¹ãããããã®ããŒã«
ããã€ãã®ããŒã«ããARIAã©ã€ããªãŒãžã§ã³ã®å®è£ ããã¹ãããã®ã«åœ¹ç«ã¡ãŸãã
- ã¹ã¯ãªãŒã³ãªãŒããŒ: NVDAïŒç¡æã§ãªãŒãã³ãœãŒã¹ïŒãJAWSïŒåçšïŒãVoiceOverïŒmacOSããã³iOSã«å èµïŒã
- ã¢ã¯ã»ã·ããªãã£ã€ã³ã¹ãã¯ã¿ãŒ: Chrome DevToolsãAccessibility InsightsãWAVEã
- ãã©ãŠã¶æ¡åŒµæ©èœ: ARIA Authoring Practices GuideïŒAPGïŒã®ãµã³ãã«ãã©ãŠã¶æ¡åŒµæ©èœã
åçã³ã³ãã³ãã®ã¢ã¯ã»ã·ããªãã£ã®æªæ¥
ãŠã§ããé²åãç¶ããã«ã€ããŠãåçã³ã³ãã³ãã¯ããã«æ®åããã§ããããéçºè ãææ°ã®ã¢ã¯ã»ã·ããªãã£ã®ãã¹ããã©ã¯ãã£ã¹ãåžžã«ææ¡ããARIAã©ã€ããªãŒãžã§ã³ã®ãããªããŒã«ã广çã«äœ¿çšããŠããŠã§ããµã€ãããã¹ãŠã®äººã«ã¢ã¯ã»ã·ãã«ã§ããããšãä¿èšŒããããšãäžå¯æ¬ ã§ããARIAãšæ¯æŽæè¡ã®å°æ¥ã®çºå±ã¯ãéãããæã€äººã ã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãããã«åäžãããå¯èœæ§ããããŸããäŸãã°ãããæŽç·Žãããã¢ã«ãŽãªãºã ã䜿çšããŠèªã¿äžãã®åªå é äœãä»ããããããŒãœãã©ã€ãºãããæèã«æ²¿ã£ãæ å ±ãæäŸã§ããããã«ãªããããããŸããã
çµè«
ARIAã©ã€ããªãŒãžã§ã³ã¯ãåçãªã³ã³ãã³ãæŽæ°ã䌎ãã¢ã¯ã»ã·ãã«ãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãäœæããããã«äžå¯æ¬ ã§ããaria-live
ãaria-atomic
ãaria-relevant
屿§ã广çã«äœ¿çšããæ¹æ³ãçè§£ããããšã§ãéçºè
ã¯éãããæã€ãŠãŒã¶ãŒãããŒãžäžã®å€æŽã«é¢ããã¿ã€ã ãªãŒã§é¢é£æ§ã®é«ãéç¥ãåãåããããã«ä¿èšŒã§ããŸãããã®ã¬ã€ãã§æŠèª¬ãããã¹ããã©ã¯ãã£ã¹ã«åŸããäžè¬çãªèœãšã穎ãé¿ããããšã§ãèœåã«é¢ä¿ãªãããã¹ãŠã®äººã«ãšã£ãŠããå
æ¬çã§äœ¿ãããããŠã§ãäœéšãåµé ããããšãã§ããŸããå®è£
ã¯åžžã«å®éã®æ¯æŽæè¡ã§ãã¹ããããŠã§ããµã€ããäžçäžã§ã¢ã¯ã»ã·ãã«ã§å©çšå¯èœã§ããããšã確èªããããã«ãææ°ã®ã¢ã¯ã»ã·ããªãã£åºæºãšã¬ã€ãã©ã€ã³ã«ã€ããŠåžžã«æ
å ±ãåŸãŠããããšãå¿ããªãã§ãã ãããã¢ã¯ã»ã·ããªãã£ãåãå
¥ããããšã¯ãåã«ã³ã³ãã©ã€ã¢ã³ã¹ã®åé¡ã§ã¯ãããŸãããããã¯ããã¹ãŠã®äººã«ãšã£ãŠããå
¬å¹³ã§å
æ¬çãªããžã¿ã«äžçãåµé ãããšããã³ãããã¡ã³ããªã®ã§ãã